bitkeeper revision 1.1713.2.18 (42b8744bIGngr2TXaEsslGtXBaQ79g)
authordjm@kirby.fc.hp.com <djm@kirby.fc.hp.com>
Tue, 21 Jun 2005 20:10:51 +0000 (20:10 +0000)
committerdjm@kirby.fc.hp.com <djm@kirby.fc.hp.com>
Tue, 21 Jun 2005 20:10:51 +0000 (20:10 +0000)
Fix and re-enable hyperprivop for ptc.ga (slow path only for now)
Signed-off-by: Dan Magenheimer <dan.magenheimer@hp.com>
xen/arch/ia64/hyperprivop.S
xen/arch/ia64/privop.c

index 4548d37e9fc6a14b70fe91e31cadc2842d9a9886..bc92a17866b18f11df127541534e44b1a6a2e337 100644 (file)
@@ -109,6 +109,10 @@ GLOBAL_ENTRY(fast_hyperprivop)
        cmp.eq p7,p6=XEN_HYPER_GET_RR,r17
 (p7)   br.sptk.many hyper_get_rr;;
 
+       // HYPERPRIVOP_PTC_GA?
+       cmp.eq p7,p6=XEN_HYPER_PTC_GA,r17
+(p7)   br.sptk.many hyper_ptc_ga;;
+
        // if not one of the above, give up for now and do it the slow way
        br.sptk.many dispatch_break_fault ;;
 
@@ -909,3 +913,7 @@ ENTRY(hyper_set_rr)
        rfi
        ;;
 END(hyper_set_rr)
+
+ENTRY(hyper_ptc_ga)
+       br.spnt.many dispatch_break_fault ;;
+END(hyper_ptc_ga)
index c4fbcca45c76fc10fbfe2ae99684cc512a8cd038..08bcecb9f589758cd45226d7b992af65af0a87fa 100644 (file)
@@ -832,10 +832,8 @@ ia64_hyperprivop(unsigned long iim, REGS *regs)
                regs->r8 = val;
                return 1;
            case HYPERPRIVOP_PTC_GA:
-               // FIXME: this doesn't seem to work yet, turned off
-               //(void)vcpu_ptc_ga(v,regs->r8,regs->r9);
-               //return 1;
-               break;
+               (void)vcpu_ptc_ga(v,regs->r8,(1L << ((regs->r9 & 0xfc) >> 2)));
+               return 1;
            case HYPERPRIVOP_ITR_D:
                (void)vcpu_get_itir(v,&itir);
                (void)vcpu_get_ifa(v,&ifa);